package Thread2;

/**
 * @Author wangzhipeng
 * @Date 2020-08-20 11:24 上午
 * @Description 终止线程
 *      一、stop 暴力中断
 *      二、标志位中断
 *          1、正常的中断
 *          2、带有异常的中断，出现后会重新重置中断标志位
 *      三、 辨析interrupt（） isInterrupted（）  interrupted（）
 *      Thread.interrupt() //中断线程
 *      Thread,isInterrupted()判断是否被中断
 *      Thread.interrupted()判断是否被中断,并清除当前中断状态
 *
 */
public class StopThread {
    public static void main(String[] args) throws InterruptedException {
        MyThread3 myThread3 = new MyThread3();
        myThread3.start();
        Thread.sleep(20);
        myThread3.interrupt();
    }
}

/**
 * 演示线程终止
 */
class MyThread3 extends Thread{
    /**
     *
     * 辨析两个方法：isInterrupted（）  interrupted（）
     *     都可以拿到标志位
     *     interrupted
     */


    /**
     * 演示有异常的中断
     */
    boolean isStop = isInterrupted();
    @Override
    public void run() {

        while(!isInterrupted()){
            System.out.println("中断标志位："+isInterrupted());
            // 有异常的情况下，中断标志位会重新更改为false
            try {
                sleep(10);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
            System.out.println("I am gee");
        }
        System.out.println("中断标志位："+isStop);
    }



}
